package DataReading;

public class Tools {
	
	public static VesselList sortVessels(VesselList x, int key, int orderKey) {
		
		if (key == 0) {
			for(int i = 0; i < x.getPointer()-1; i++) { 
				for(int j = i; j < x.getPointer(); j++) {
					if (x.getVesselAtIndex(j).getID() < x.getVesselAtIndex(i).getID()) {
						Vessel temp = x.getVesselAtIndex(j);
						x.setVesselAtIndex(x.getVesselAtIndex(i), j);
						x.setVesselAtIndex(temp, i);	
					}
				}
			}
		}
		else if (key == 1) {
			for(int i = 0; i < x.getPointer()-1; i++) { 
				for(int j = i; j < x.getPointer(); j++) {
					if (x.getVesselAtIndex(j).getTypeName().compareToIgnoreCase(x.getVesselAtIndex(i).getTypeName()) < 0) {
						Vessel temp = x.getVesselAtIndex(j);
						x.setVesselAtIndex(x.getVesselAtIndex(i), j);
						x.setVesselAtIndex(temp, i);	
					}
				}
			}
		}
		else if (key == 2) {
			for(int i = 0; i < x.getPointer()-1; i++) { 
				for(int j = i; j < x.getPointer(); j++) {
					if (x.getVesselAtIndex(j).getXPosition() < x.getVesselAtIndex(i).getXPosition()) {
						Vessel temp = x.getVesselAtIndex(j);
						x.setVesselAtIndex(x.getVesselAtIndex(i), j);
						x.setVesselAtIndex(temp, i);	
					}
				}
			}
		}
		else if (key == 3) {
			for(int i = 0; i < x.getPointer()-1; i++) { 
				for(int j = i; j < x.getPointer(); j++) {
					if (x.getVesselAtIndex(j).getYPosition() < x.getVesselAtIndex(i).getYPosition()) {
						Vessel temp = x.getVesselAtIndex(j);
						x.setVesselAtIndex(x.getVesselAtIndex(i), j);
						x.setVesselAtIndex(temp, i);	
					}
				}
			}
		}
		else if (key == 4) {
			for(int i = 0; i < x.getPointer()-1; i++) { 
				for(int j = i; j < x.getPointer(); j++) {
					if (x.getVesselAtIndex(j).getSpeed() < x.getVesselAtIndex(i).getSpeed()) {
						Vessel temp = x.getVesselAtIndex(j);
						x.setVesselAtIndex(x.getVesselAtIndex(i), j);
						x.setVesselAtIndex(temp, i);	
					}
				}
			}
		}
		else if (key == 5) {
			for(int i = 0; i < x.getPointer()-1; i++) { 
				for(int j = i; j < x.getPointer(); j++) {
					if (x.getVesselAtIndex(j).getCourse().compareToIgnoreCase(x.getVesselAtIndex(i).getCourse()) < 0) {
						Vessel temp = x.getVesselAtIndex(j);
						x.setVesselAtIndex(x.getVesselAtIndex(i), j);
						x.setVesselAtIndex(temp, i);	
					}
				}
			}
		}
		else if (key == 6) {
			for(int i = 0; i < x.getPointer()-1; i++) { 
				for(int j = i; j < x.getPointer(); j++) {
					if (x.getVesselAtIndex(j).getDistance() < x.getVesselAtIndex(i).getDistance()) {
						Vessel temp = x.getVesselAtIndex(j);
						x.setVesselAtIndex(x.getVesselAtIndex(i), j);
						x.setVesselAtIndex(temp, i);	
					}
				}
			}
		}
		else if (key == 7) {
			for(int i = 0; i < x.getPointer()-1; i++) { 
				for(int j = i; j < x.getPointer(); j++) {
					if (x.getVesselAtIndex(j).getUpdateTime() < x.getVesselAtIndex(i).getUpdateTime()) {
						Vessel temp = x.getVesselAtIndex(j);
						x.setVesselAtIndex(x.getVesselAtIndex(i), j);
						x.setVesselAtIndex(temp, i);	
					}
				}
			}
		}
		
		VesselList y = new VesselList();
		if (orderKey == 1) {
			for (int i = 0; i < x.getPointer(); i++) {
				y.add(x.getVesselAtIndex(x.getPointer()-1-i));
			}	
			return y;
		}
		
		return x;
	}
	

}
